package com.versita.shadow_sniper.domain;

import java.io.Serializable;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;

@Entity
@Inheritance(strategy=InheritanceType.JOINED) // normalize the value
public class Weapon implements Serializable {
    /**
     * 
     */
    private static final long serialVersionUID = 1614200028886365309L;

    private long weaponId;
    private String name;    // name of the weapon. could be riffle name.

    /**
     * Physical Properties
     */
    private double range;      // km
    private double damage;  // live 0-1 // damage is between 0..1 --- used to determine the quality of the weapon
    private double damageRadius;  // how much damage it makes once hitting target.
    private double weight;  // kg

    /**
     * Gamification Properties
     */
    private int cost;       // real $dollar, i.e., missile will be one million dollars.
    private int ammibition; // i.e., bullet

    /**
     * @return the weaponId
     */
    @Id @GeneratedValue(strategy=GenerationType.AUTO)
    public long getWeaponId() {
        return this.weaponId;
    }
    /**
     * @param weaponId the weaponId to set
     */
    public void setWeaponId(long weaponId) {
        this.weaponId = weaponId;
    }
    /**
     * @return the name
     */
    public String getName() {
        return this.name;
    }
    /**
     * @param name the name to set
     */
    public void setName(String name) {
        this.name = name;
    }
    /**
     * @return the range
     */
    public double getRange() {
        return this.range;
    }
    /**
     * @param range the range to set
     */
    public void setRange(double range) {
        this.range = range;
    }
    /**
     * @return the damage
     */
    public double getDamage() {
        return this.damage;
    }
    /**
     * @param damage the damage to set
     */
    public void setDamage(double damage) {
        this.damage = damage;
    }
    /**
     * @return the damageRadius
     */
    public double getDamageRadius() {
        return this.damageRadius;
    }
    /**
     * @param damageRadius the damageRadius to set
     */
    public void setDamageRadius(double damageRadius) {
        this.damageRadius = damageRadius;
    }
    /**
     * @return the cost
     */
    public int getCost() {
        return this.cost;
    }
    /**
     * @param cost the cost to set
     */
    public void setCost(int cost) {
        this.cost = cost;
    }
    /**
     * @return the ammibition
     */
    public int getAmmibition() {
        return this.ammibition;
    }
    /**
     * @param ammibition the ammibition to set
     */
    public void setAmmibition(int ammibition) {
        this.ammibition = ammibition;
    }
    /**
     * @return the weight
     */
    public double getWeight() {
        return weight;
    }
    /**
     * @param weight the weight to set
     */
    public void setWeight(double weight) {
        this.weight = weight;
    }



}
